package model.dao;

import java.util.List;

import javax.persistence.TypedQuery;

import model.basicas.Departamento;
import model.basicas.Usuario;
import model.interfaces.IDepartamentoDAO;

public class DepartamentoDAO extends GenericoDAO<Departamento> implements IDepartamentoDAO {

	@Override
	public void inserir(Departamento objeto) {

		if(!this.getEntitymanager().getTransaction().isActive())
		{
			this.getEntitymanager().getTransaction().begin();
		}
		this.getEntitymanager().persist(objeto);
		this.getEntitymanager().getTransaction().commit();


	}

	@Override
	public void remover(Departamento objeto) {

		if(!this.getEntitymanager().getTransaction().isActive())
		{
			this.getEntitymanager().getTransaction().begin();
		}

		Departamento aux = consultarPorId(objeto.getIdDepartamento());
		if (aux != null)
		{
			this.getEntitymanager().remove(aux);
			this.getEntitymanager().getTransaction().commit();
		}
		
	}

	@Override
	public Departamento atualizar(Departamento objeto) {
		
		if(!this.getEntitymanager().getTransaction().isActive())
		{
			this.getEntitymanager().getTransaction().begin();
		}

		Departamento aux = consultarPorId(objeto.getIdDepartamento());
		if (aux != null)
		{
			this.getEntitymanager().merge(objeto);
			this.getEntitymanager().getTransaction().commit();
		}
		
		return objeto;
		
	}

	@Override
	public List<Departamento> listarCadastrados() {
		
		TypedQuery<Departamento> q = this.getEntitymanager().createQuery
				("select d from Departamento d", Departamento.class);
		List<Departamento> list = q.getResultList();
		
		return list;
	}

	@Override
	public Departamento consultarPorId(long idDepartamento) {

		return this.getEntitymanager().find(Departamento.class, idDepartamento);
		
	}
	
	

}
